//-------------------- 右键菜单演示 ------------------------//
chrome.contextMenus.create({
  title: "测试右键菜单",
  onclick: function () {
    chrome.notifications.create(null, {
      type: 'basic',
      iconUrl: 'img/icon.png',
      title: '这是标题',
      message: '您刚才点击了自定义右键菜单！'
    });
  }
});
chrome.contextMenus.create({
  title: '使用度娘搜索：%s', // %s表示选中的文字
  contexts: ['selection'], // 只有当选中文字时才会出现此右键菜单
  onclick: function (params) {
    // 注意不能使用location.href，因为location是属于background的window对象
    chrome.tabs.create({url: 'https://www.baidu.com/s?ie=utf-8&wd=' + encodeURI(params.selectionText)});
  }
});

//-------------------- badge演示 ------------------------//
/*(function()
{
	var showBadge = false;
	var menuId = chrome.contextMenus.create({
		title: '显示图标上的Badge',
		type: 'checkbox',
		checked: false,
		onclick: function() {
			if(!showBadge)
			{
				chrome.browserAction.setBadgeText({text: 'New'});
				chrome.browserAction.setBadgeBackgroundColor({color: [255, 0, 0, 255]});
				chrome.contextMenus.update(menuId, {title: '隐藏图标上的Badge', checked: true});
			}
			else
			{
				chrome.browserAction.setBadgeText({text: ''});
				chrome.browserAction.setBadgeBackgroundColor({color: [0, 0, 0, 0]});
				chrome.contextMenus.update(menuId, {title: '显示图标上的Badge', checked: false});
			}
			showBadge = !showBadge;
		}
	});
})();*/

// 监听来自content-script的消息
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
  console.log('收到来自content-script的消息：');
  console.log(request, sender, sendResponse);
  sendResponse('我是后台，我已收到你的消息：' + JSON.stringify(request));
});

// 获取当前选项卡ID
function getCurrentTabId(callback) {
  chrome.tabs.query({active: true, currentWindow: true}, function (tabs) {
    if (callback) callback(tabs.length ? tabs[0].id : null);
  });
}

// 当前标签打开某个链接
function openUrlCurrentTab(url) {
  getCurrentTabId(tabId => {
    chrome.tabs.update(tabId, {url: url});
  })
}

// 新标签打开某个链接
function openUrlNewTab(url) {
  chrome.tabs.create({url: url});
}

// omnibox 演示
chrome.omnibox.onInputChanged.addListener((text, suggest) => {
  console.log('inputChanged: ' + text);
  if (!text) return;
  if (text === '美女') {
    suggest([
      {content: '中国' + text, description: '你要找“中国美女”吗？'},
      {content: '日本' + text, description: '你要找“日本美女”吗？'},
      {content: '泰国' + text, description: '你要找“泰国美女或人妖”吗？'},
      {content: '韩国' + text, description: '你要找“韩国美女”吗？'}
    ]);
  }
  else if (text === '微博') {
    suggest([
      {content: '新浪' + text, description: '新浪' + text},
      {content: '腾讯' + text, description: '腾讯' + text},
      {content: '搜狐' + text, description: '搜索' + text},
    ]);
  }
  else {
    suggest([
      {content: '百度搜索 ' + text, description: '百度搜索 ' + text},
      {content: '谷歌搜索 ' + text, description: '谷歌搜索 ' + text},
    ]);
  }
});

// 当用户接收关键字建议时触发
chrome.omnibox.onInputEntered.addListener((text) => {
  console.log('inputEntered: ' + text);
  if (!text) return;
  var href = '';
  if (text.endsWith('美女')) {
    href = 'http://image.baidu.com/search/index?tn=baiduimage&ie=utf-8&word=' + text;
  } else if (text.startsWith('百度搜索')) {
    href = 'https://www.baidu.com/s?ie=UTF-8&wd=' + text.replace('百度搜索 ', '');
  } else if (text.startsWith('谷歌搜索')) {
    href = 'https://www.google.com.tw/search?q=' + text.replace('谷歌搜索 ', '');
  } else {
    href = 'https://www.baidu.com/s?ie=UTF-8&wd=' + text;
  }
  openUrlCurrentTab(href);
});

// 预留一个方法给popup调用
function testBackground() {
  alert('你好，我是background！');
}

// 是否显示图片
var showImage;
chrome.storage.sync.get({showImage: true}, function (items) {
  showImage = items.showImage;
});
// web请求监听，最后一个参数表示阻塞式，需单独声明权限：webRequestBlocking
chrome.webRequest.onBeforeRequest.addListener(details => {
  // cancel 表示取消本次请求
  if (!showImage && details.type === 'image') return {cancel: true};
  // 简单的音视频检测
  // 大部分网站视频的type并不是media，且视频做了防下载处理，所以这里仅仅是为了演示效果，无实际意义
  if (details.type === 'media') {
    chrome.notifications.create(null, {
      type: 'basic',
      iconUrl: 'img/icon.png',
      title: '检测到音视频',
      message: '音视频地址：' + details.url,
    });
  }
}, {urls: ["<all_urls>"]}, ["blocking"]);
